import { _DeepPartial, defineStore } from 'pinia';
import { getUserNav } from '@/api/auth-api';
import { useUserStore } from '@/store';
import { hasChild } from '@/utils/util';
import { accountRoutes, LAYOUT, PAGE_NOT_FOUND_ROUTE } from '@/router/constants';
import type { RouteRecordRaw } from 'vue-router';
import { RouterState } from './types.ts';
import { AppRouteRecordRaw, MenuData } from '@/router/types.ts';

const isDevelopment = ['development', 'dev'].includes(import.meta.env.MODE)

const routerComponents = {Layout: LAYOUT};

const viewsModules = import.meta.glob([
  '/src/views/**/*.{vue,jsx,tsx,ts}',
  '!**/components/*',
]);

const useRouterStore = defineStore('router', {
  state: (): RouterState => {
    return {
      menuList: [],
      routers: [],
    };
  },
  getters: {},
  actions: {
    updatePatch(state: Partial<RouterState>) {
      this.$patch(state as _DeepPartial<RouterState>);
    },

    resetInfo() {
      this.$reset();
    },

    /**
     * 判断当前角色是否用于该路由
     */
    accessRoute(item: AppRouteRecordRaw | MenuData) {
      const userStore = useUserStore();
      const roles = userStore.getRoles;
      return (!item.meta?.roles || item.meta.roles.some((role) => roles.indexOf(role) > -1));
    },

    /**
     * 格式化树形结构数据 生成路由表
     */
    generatorAsyncRouter(routers: Array<any> = [], parent?: RouteRecordRaw): RouteRecordRaw[] {
      // 先进行排序
      const list: MenuData[] = [...routers];
      list.sort((a: MenuData, b: MenuData) => {
        return (a.meta?.orderNum || 0) - (b.meta?.orderNum || 0);
      });

      return list.map((item: MenuData) => {
        let currentRouter: RouteRecordRaw = {
          // 如果路由设置了 path，则作为默认 path，否则 路由地址 动态拼接生成
          path: item.path || `${(parent && parent.path) || ''}/${item.path}`,
          // 路由名称，建议保持唯一
          name: item.name || item.path.replace(/\//g, ''),
          meta: item.meta,
          children: [],
        };

        // 为了防止出现后端返回结果不规范，处理有可能出现拼接出两个 反斜杠
        currentRouter.path = currentRouter.path.replace('//', '/');

        // 不是外链 动态加载组件
        if (!item.meta?.link) {
          currentRouter.component = routerComponents[item.component || 'Layout'] || viewsModules[`/src/views${item.component}`];
        }
        // 重定向
        if (item.redirect) {
          currentRouter.redirect = item.redirect;
        }
        // 是否有子菜单，并递归处理
        if (hasChild(item)) {
          currentRouter.children = this.generatorAsyncRouter(item.children, currentRouter);
        }
        return currentRouter;
      });
    },

    /**
     * 生成菜单
     */
    generatorMenu(routers: Array<any> = []): MenuData[] {
      // 先进行排序
      const list: MenuData[] = [...routers];
      list.sort((a: MenuData, b: MenuData) => {
        return (a.meta?.orderNum || 0) - (b.meta?.orderNum || 0);
      });
      return list.map((menu) => {
        if (!menu.hidden) {
          let item: MenuData = {
            path: menu.path,
            name: menu.name,
            meta: menu.meta,
          };
          // 修正 name 为空的问题
          if (!item.name) {
            item.name = item.path.replace('/', '').toLowerCase()
          }
          // 如果有下级
          if (hasChild(menu)) {
            item.children = this.generatorMenu(menu.children);
          }
          return item;
        }
      }).filter(Boolean) as MenuData[];
    },

    /**
     * 根据用户的角色和路由meta.role进行过滤
     * @param routers
     * @returns {*}
     */
    filterRoleRouter(routers: AppRouteRecordRaw[] | MenuData[] = []): RouteRecordRaw[] {
      const result: RouteRecordRaw[] = [];
      routers.forEach((route: AppRouteRecordRaw | MenuData) => {
        // 是否拥有role角色
        const hasAccessRole = this.accessRoute(route);
        if (hasAccessRole) {
          let obj: RouteRecordRaw = {...route} as RouteRecordRaw;
          if (hasChild(route)) {
            obj.children = this.filterRoleRouter(route.children);
          }
          result.push(obj);
          return obj;
        }
      });
      return result;
    },

    /**
     * 生成路由表
     */
    async generateRoutes() {
      let routers: RouteRecordRaw[] = [];
      //
      // let datas={
      //   "permissions": [
      //     "channel:info:create",
      //     "manager:info:update",
      //     "manager:info:delete",
      //     "manager:info:create",
      //     "sys:operation_log:delete",
      //     "sys:user:info",
      //     "sys:user:create",
      //     "sys:user:info",
      //     "sys:user:update",
      //     "sys:user:delete",
      //     "trade:list:settle",
      //     "trade:list:submit",
      //     "trade:list:refund",
      //     "trade:list:notify",
      //     "manager:info:list",
      //     "channel:info:view",
      //     "channel:info:update",
      //     "channel:info:delete",
      //     "channel:info:add",
      //     "channel:product:create",
      //     "channel:product:view",
      //     "channel:product:update",
      //     "channel:product:delete",
      //     "financial:info:fee",
      //     "financial:list:export",
      //     "financial:info:view",
      //     "sys:role:info",
      //     "sys:role:update",
      //     "white:list:create",
      //     "incoming:info:more",
      //     "incoming:info:query",
      //     "recharge:info:view",
      //     "sys:user:info",
      //     "sys:menu:info",
      //     "sys:menu:select",
      //     "sys:menu:create",
      //     "sys:menu:info",
      //     "sys:menu:select",
      //     "sys:menu:update",
      //     "sys:menu:delete",
      //     "sys:role:info",
      //     "sys:role:create",
      //     "sys:role:delete",
      //     "trans:list:notify",
      //     "store:info:info",
      //     "store:info:update",
      //     "store:info:entry",
      //     "store:info:update",
      //     "store:info:create",
      //     "store:info:delete",
      //     "sys:operation_log:list",
      //     "store:entry:list",
      //     "store:info:info",
      //     "financial:fee:info",
      //     "behalf:commission",
      //     "sys:menu:list",
      //     "statistic:data:user",
      //     "manager:info:info",
      //     "behalf:behalfAmount",
      //     "sys:role:list",
      //     "order:trans",
      //     "behalf:sign",
      //     "sys:user:list",
      //     "store:info:list",
      //     "manager:info:list",
      //     "order:trade"
      //   ],
      //   "tree": [
      //     {
      //       "id": 76,
      //       "pid": 0,
      //       "plat": "admin",
      //       "title": "代付管理",
      //       "name": "",
      //       "icon": "icon_jy",
      //       "path": "/behalf",
      //       "redirect": null,
      //       "component": "Layout",
      //       "permissions": null,
      //       "type": 0,
      //       "hidden": 0,
      //       "cache": 1,
      //       "sort": 8,
      //       "status": 1,
      //       "create_time": 1745198043,
      //       "update_time": 1745198043,
      //       "child": [
      //         {
      //           "id": 79,
      //           "pid": 76,
      //           "plat": "admin",
      //           "title": "手续费充值",
      //           "name": "behalf-commission",
      //           "icon": "icon_sxf",
      //           "path": "commission",
      //           "redirect": null,
      //           "component": "/behalf/commission/index.vue",
      //           "permissions": "behalf:commission",
      //           "type": 1,
      //           "hidden": 0,
      //           "cache": 1,
      //           "sort": 3,
      //           "status": 1,
      //           "create_time": 1745198278,
      //           "update_time": 1745198278,
      //           "child": []
      //         },
      //         {
      //           "id": 78,
      //           "pid": 76,
      //           "plat": "admin",
      //           "title": "代付金额充值",
      //           "name": "behalf-behalfAmount",
      //           "icon": "icon_dfje",
      //           "path": "behalfAmount",
      //           "redirect": null,
      //           "component": "/behalf/behalfAmount/index.vue",
      //           "permissions": "behalf:behalfAmount",
      //           "type": 1,
      //           "hidden": 0,
      //           "cache": 1,
      //           "sort": 2,
      //           "status": 1,
      //           "create_time": 1745198213,
      //           "update_time": 1745198213,
      //           "child": []
      //         },
      //         {
      //           "id": 77,
      //           "pid": 76,
      //           "plat": "admin",
      //           "title": "签约列表",
      //           "name": "behalf-sign",
      //           "icon": "icon_qy",
      //           "path": "list",
      //           "redirect": null,
      //           "component": "/behalf/sign/index.vue",
      //           "permissions": "behalf:sign",
      //           "type": 1,
      //           "hidden": 0,
      //           "cache": 1,
      //           "sort": 1,
      //           "status": 1,
      //           "create_time": 1745198133,
      //           "update_time": 1745198133,
      //           "child": []
      //         }
      //       ]
      //     },
      //     {
      //       "id": 70,
      //       "pid": 0,
      //       "plat": "admin",
      //       "title": "订单中心",
      //       "name": "",
      //       "icon": "icon_jy",
      //       "path": "/order",
      //       "redirect": null,
      //       "component": "Layout",
      //       "permissions": null,
      //       "type": 0,
      //       "hidden": 0,
      //       "cache": 1,
      //       "sort": 7,
      //       "status": 1,
      //       "create_time": 1745197521,
      //       "update_time": 1745197521,
      //       "child": [
      //         {
      //           "id": 80,
      //           "pid": 70,
      //           "plat": "admin",
      //           "title": "代付订单",
      //           "name": "order-trans",
      //           "icon": "icon_dfdd",
      //           "path": "trans",
      //           "redirect": null,
      //           "component": "/order/trans/index.vue",
      //           "permissions": "order:trans",
      //           "type": 1,
      //           "hidden": 0,
      //           "cache": 1,
      //           "sort": 2,
      //           "status": 1,
      //           "create_time": 1745204204,
      //           "update_time": 1745204204,
      //           "child": [
      //             {
      //               "id": 81,
      //               "pid": 80,
      //               "plat": "admin",
      //               "title": "回调",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "trans:list:notify",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1745204307,
      //               "update_time": 1745204307,
      //               "child": []
      //             }
      //           ]
      //         },
      //         {
      //           "id": 71,
      //           "pid": 70,
      //           "plat": "admin",
      //           "title": "交易订单",
      //           "name": "order-trade",
      //           "icon": "icon_dd",
      //           "path": "list",
      //           "redirect": null,
      //           "component": "/order/trade/index.vue",
      //           "permissions": "order:trade",
      //           "type": 1,
      //           "hidden": 0,
      //           "cache": 1,
      //           "sort": 1,
      //           "status": 1,
      //           "create_time": 1745197587,
      //           "update_time": 1745197587,
      //           "child": [
      //             {
      //               "id": 75,
      //               "pid": 71,
      //               "plat": "admin",
      //               "title": "订单结算",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "trade:list:settle",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1745197678,
      //               "update_time": 1745197678,
      //               "child": []
      //             },
      //             {
      //               "id": 74,
      //               "pid": 71,
      //               "plat": "admin",
      //               "title": "订单确认",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "trade:list:submit",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1745197663,
      //               "update_time": 1745197663,
      //               "child": []
      //             },
      //             {
      //               "id": 73,
      //               "pid": 71,
      //               "plat": "admin",
      //               "title": "退款",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "trade:list:refund",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1745197647,
      //               "update_time": 1745197647,
      //               "child": []
      //             },
      //             {
      //               "id": 72,
      //               "pid": 71,
      //               "plat": "admin",
      //               "title": "回调",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "trade:list:notify",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1745197635,
      //               "update_time": 1745197635,
      //               "child": []
      //             }
      //           ]
      //         }
      //       ]
      //     },
      //     {
      //       "id": 62,
      //       "pid": 0,
      //       "plat": "admin",
      //       "title": "财务管理",
      //       "name": "",
      //       "icon": "icon_xs1",
      //       "path": "/financial",
      //       "redirect": null,
      //       "component": "Layout",
      //       "permissions": null,
      //       "type": 0,
      //       "hidden": 0,
      //       "cache": 1,
      //       "sort": 6,
      //       "status": 1,
      //       "create_time": 1744970205,
      //       "update_time": 1744970205,
      //       "child": [
      //         {
      //           "id": 83,
      //           "pid": 62,
      //           "plat": "admin",
      //           "title": "预充值查看数据",
      //           "name": "financial-recharge",
      //           "icon": "",
      //           "path": "recharge/:id",
      //           "redirect": null,
      //           "component": "/financial/fee/recharge.vue",
      //           "permissions": null,
      //           "type": 1,
      //           "hidden": 1,
      //           "cache": 1,
      //           "sort": 4,
      //           "status": 1,
      //           "create_time": 1745213738,
      //           "update_time": 1745213738,
      //           "child": []
      //         },
      //         {
      //           "id": 82,
      //           "pid": 62,
      //           "plat": "admin",
      //           "title": "预充值手续费管理",
      //           "name": "financial-fee-info",
      //           "icon": "icon_ycz",
      //           "path": "fee",
      //           "redirect": null,
      //           "component": "/financial/fee/index.vue",
      //           "permissions": "financial:fee:info",
      //           "type": 1,
      //           "hidden": 0,
      //           "cache": 1,
      //           "sort": 3,
      //           "status": 1,
      //           "create_time": 1745205273,
      //           "update_time": 1745205273,
      //           "child": [
      //             {
      //               "id": 84,
      //               "pid": 82,
      //               "plat": "admin",
      //               "title": "查看数据",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "recharge:info:view",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1745217221,
      //               "update_time": 1745217221,
      //               "child": []
      //             }
      //           ]
      //         },
      //         {
      //           "id": 69,
      //           "pid": 62,
      //           "plat": "admin",
      //           "title": "费率变更",
      //           "name": "financial-fee",
      //           "icon": "",
      //           "path": "fee/:id",
      //           "redirect": null,
      //           "component": "/financial/commission/fee.vue",
      //           "permissions": null,
      //           "type": 1,
      //           "hidden": 1,
      //           "cache": 1,
      //           "sort": 2,
      //           "status": 1,
      //           "create_time": 1745197376,
      //           "update_time": 1745197376,
      //           "child": []
      //         },
      //         {
      //           "id": 63,
      //           "pid": 62,
      //           "plat": "admin",
      //           "title": "商务提成管理",
      //           "name": "financial-commission-list",
      //           "icon": "icon_cw",
      //           "path": "list",
      //           "redirect": null,
      //           "component": "/financial/commission/index.vue",
      //           "permissions": null,
      //           "type": 1,
      //           "hidden": 0,
      //           "cache": 1,
      //           "sort": 1,
      //           "status": 1,
      //           "create_time": 1744970278,
      //           "update_time": 1744970278,
      //           "child": [
      //             {
      //               "id": 66,
      //               "pid": 63,
      //               "plat": "admin",
      //               "title": "费率变更",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "financial:info:fee",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1744970366,
      //               "update_time": 1744970366,
      //               "child": []
      //             },
      //             {
      //               "id": 64,
      //               "pid": 63,
      //               "plat": "admin",
      //               "title": "导出订单",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "financial:list:export",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1744970330,
      //               "update_time": 1744970330,
      //               "child": []
      //             },
      //             {
      //               "id": 65,
      //               "pid": 63,
      //               "plat": "admin",
      //               "title": "查看数据",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "financial:info:view",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1744970352,
      //               "update_time": 1744970352,
      //               "child": []
      //             }
      //           ]
      //         },
      //         {
      //           "id": 67,
      //           "pid": 62,
      //           "plat": "admin",
      //           "title": "查看数据",
      //           "name": "financial-info",
      //           "icon": "",
      //           "path": "info/:id",
      //           "redirect": null,
      //           "component": "/financial/commission/info.vue",
      //           "permissions": null,
      //           "type": 1,
      //           "hidden": 1,
      //           "cache": 1,
      //           "sort": 1,
      //           "status": 1,
      //           "create_time": 1744970458,
      //           "update_time": 1744970458,
      //           "child": []
      //         }
      //       ]
      //     },
      //     {
      //       "id": 31,
      //       "pid": 0,
      //       "plat": "admin",
      //       "title": "销售管理",
      //       "name": "",
      //       "icon": "icon_sw",
      //       "path": "/manager",
      //       "redirect": null,
      //       "component": "Layout",
      //       "permissions": null,
      //       "type": 0,
      //       "hidden": 0,
      //       "cache": 1,
      //       "sort": 5,
      //       "status": 1,
      //       "create_time": 1735202772,
      //       "update_time": 1735202772,
      //       "child": [
      //         {
      //           "id": 33,
      //           "pid": 31,
      //           "plat": "admin",
      //           "title": "商务人员",
      //           "name": "manager-operation",
      //           "icon": "user-bold",
      //           "path": ":type/:id",
      //           "redirect": null,
      //           "component": "/manager/list/operation.vue",
      //           "permissions": "manager:info:info",
      //           "type": 1,
      //           "hidden": 1,
      //           "cache": 1,
      //           "sort": 2,
      //           "status": 1,
      //           "create_time": 1735202937,
      //           "update_time": 1735202937,
      //           "child": []
      //         },
      //         {
      //           "id": 32,
      //           "pid": 31,
      //           "plat": "admin",
      //           "title": "商务人员列表",
      //           "name": "manager-info-list",
      //           "icon": "icon_sw1",
      //           "path": "list",
      //           "redirect": null,
      //           "component": "/manager/list/index.vue",
      //           "permissions": "manager:info:list",
      //           "type": 1,
      //           "hidden": 0,
      //           "cache": 1,
      //           "sort": 1,
      //           "status": 1,
      //           "create_time": 1735202853,
      //           "update_time": 1735202853,
      //           "child": [
      //             {
      //               "id": 35,
      //               "pid": 32,
      //               "plat": "admin",
      //               "title": "编辑",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "manager:info:update",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1735203023,
      //               "update_time": 1735203023,
      //               "child": []
      //             },
      //             {
      //               "id": 36,
      //               "pid": 32,
      //               "plat": "admin",
      //               "title": "删除",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "manager:info:delete",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1735203046,
      //               "update_time": 1735203046,
      //               "child": []
      //             },
      //             {
      //               "id": 37,
      //               "pid": 32,
      //               "plat": "admin",
      //               "title": "新增",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "manager:info:create",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1735203087,
      //               "update_time": 1735203087,
      //               "child": []
      //             },
      //             {
      //               "id": 34,
      //               "pid": 32,
      //               "plat": "admin",
      //               "title": "客户详情",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "manager:info:list",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1735203007,
      //               "update_time": 1735203007,
      //               "child": []
      //             }
      //           ]
      //         }
      //       ]
      //     },
      //     {
      //       "id": 22,
      //       "pid": 0,
      //       "plat": "admin",
      //       "title": "商户管理",
      //       "name": "",
      //       "icon": "icon_sh",
      //       "path": "/store",
      //       "redirect": null,
      //       "component": "Layout",
      //       "permissions": null,
      //       "type": 0,
      //       "hidden": 0,
      //       "cache": 1,
      //       "sort": 4,
      //       "status": 1,
      //       "create_time": 1735201785,
      //       "update_time": 1735201785,
      //       "child": [
      //         {
      //           "id": 26,
      //           "pid": 22,
      //           "plat": "admin",
      //           "title": "发起进件",
      //           "name": "store-entry",
      //           "icon": "user-bold",
      //           "path": "entry/:id",
      //           "redirect": null,
      //           "component": "/store/store/entry.vue",
      //           "permissions": "store:entry:list",
      //           "type": 1,
      //           "hidden": 1,
      //           "cache": 1,
      //           "sort": 5,
      //           "status": 1,
      //           "create_time": 1735202128,
      //           "update_time": 1735202128,
      //           "child": []
      //         },
      //         {
      //           "id": 24,
      //           "pid": 22,
      //           "plat": "admin",
      //           "title": "商户操作",
      //           "name": "store-operation",
      //           "icon": "user-bold",
      //           "path": ":type/:id",
      //           "redirect": null,
      //           "component": "/store/store/operation.vue",
      //           "permissions": "store:info:info",
      //           "type": 1,
      //           "hidden": 1,
      //           "cache": 1,
      //           "sort": 4,
      //           "status": 1,
      //           "create_time": 1735202022,
      //           "update_time": 1735202022,
      //           "child": [
      //             {
      //               "id": 25,
      //               "pid": 24,
      //               "plat": "admin",
      //               "title": "编辑",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "store:info:info,store:info:update",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1735202046,
      //               "update_time": 1735202046,
      //               "child": []
      //             }
      //           ]
      //         },
      //         {
      //           "id": 46,
      //           "pid": 22,
      //           "plat": "admin",
      //           "title": "白名单",
      //           "name": "white-list",
      //           "icon": "icon_001",
      //           "path": "white",
      //           "redirect": null,
      //           "component": "/store/white/index.vue",
      //           "permissions": null,
      //           "type": 1,
      //           "hidden": 0,
      //           "cache": 1,
      //           "sort": 3,
      //           "status": 1,
      //           "create_time": 1735541970,
      //           "update_time": 1735541970,
      //           "child": [
      //             {
      //               "id": 87,
      //               "pid": 46,
      //               "plat": "admin",
      //               "title": "新增白名单",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "white:list:create",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1750649743,
      //               "update_time": 1750649743,
      //               "child": []
      //             }
      //           ]
      //         },
      //         {
      //           "id": 45,
      //           "pid": 22,
      //           "plat": "admin",
      //           "title": "进件管理",
      //           "name": "incoming-list",
      //           "icon": "icon_yygl",
      //           "path": "incoming",
      //           "redirect": null,
      //           "component": "/store/incoming/index.vue",
      //           "permissions": "",
      //           "type": 1,
      //           "hidden": 0,
      //           "cache": 1,
      //           "sort": 2,
      //           "status": 1,
      //           "create_time": 1735278148,
      //           "update_time": 1735278148,
      //           "child": [
      //             {
      //               "id": 86,
      //               "pid": 45,
      //               "plat": "admin",
      //               "title": "更多",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "incoming:info:more",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1745218910,
      //               "update_time": 1745218910,
      //               "child": []
      //             },
      //             {
      //               "id": 85,
      //               "pid": 45,
      //               "plat": "admin",
      //               "title": "查看",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "incoming:info:query",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1745218896,
      //               "update_time": 1745218896,
      //               "child": []
      //             }
      //           ]
      //         },
      //         {
      //           "id": 23,
      //           "pid": 22,
      //           "plat": "admin",
      //           "title": "商户列表",
      //           "name": "store-list",
      //           "icon": "icon_wdsj_sel",
      //           "path": "list",
      //           "redirect": null,
      //           "component": "/store/store/index.vue",
      //           "permissions": "store:info:list",
      //           "type": 1,
      //           "hidden": 0,
      //           "cache": 1,
      //           "sort": 1,
      //           "status": 1,
      //           "create_time": 1735201932,
      //           "update_time": 1735201932,
      //           "child": [
      //             {
      //               "id": 27,
      //               "pid": 23,
      //               "plat": "admin",
      //               "title": "进件",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "store:info:entry",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1735202621,
      //               "update_time": 1735202621,
      //               "child": []
      //             },
      //             {
      //               "id": 28,
      //               "pid": 23,
      //               "plat": "admin",
      //               "title": "编辑",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "store:info:update",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1735202644,
      //               "update_time": 1735202644,
      //               "child": []
      //             },
      //             {
      //               "id": 30,
      //               "pid": 23,
      //               "plat": "admin",
      //               "title": "新增",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "store:info:create",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1735202682,
      //               "update_time": 1735202682,
      //               "child": []
      //             },
      //             {
      //               "id": 29,
      //               "pid": 23,
      //               "plat": "admin",
      //               "title": "删除",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "store:info:delete",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1735202665,
      //               "update_time": 1735202665,
      //               "child": []
      //             }
      //           ]
      //         }
      //       ]
      //     },
      //     {
      //       "id": 49,
      //       "pid": 0,
      //       "plat": "admin",
      //       "title": "通道管理",
      //       "name": "",
      //       "icon": "icon_td",
      //       "path": "/channel",
      //       "redirect": null,
      //       "component": "Layout",
      //       "permissions": null,
      //       "type": 0,
      //       "hidden": 0,
      //       "cache": 1,
      //       "sort": 3,
      //       "status": 1,
      //       "create_time": 1744968567,
      //       "update_time": 1744968567,
      //       "child": [
      //         {
      //           "id": 51,
      //           "pid": 49,
      //           "plat": "admin",
      //           "title": "产品管理",
      //           "name": "channel-product",
      //           "icon": "icon_cp",
      //           "path": "product",
      //           "redirect": null,
      //           "component": "/channel/product/index.vue",
      //           "permissions": null,
      //           "type": 1,
      //           "hidden": 0,
      //           "cache": 1,
      //           "sort": 2,
      //           "status": 1,
      //           "create_time": 1744968714,
      //           "update_time": 1744968714,
      //           "child": [
      //             {
      //               "id": 57,
      //               "pid": 51,
      //               "plat": "admin",
      //               "title": "新增产品",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "channel:product:create",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1744968873,
      //               "update_time": 1744968873,
      //               "child": []
      //             },
      //             {
      //               "id": 58,
      //               "pid": 51,
      //               "plat": "admin",
      //               "title": "查看",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "channel:product:view",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1744968889,
      //               "update_time": 1744968889,
      //               "child": []
      //             },
      //             {
      //               "id": 59,
      //               "pid": 51,
      //               "plat": "admin",
      //               "title": "编辑",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "channel:product:update",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1744968906,
      //               "update_time": 1744968906,
      //               "child": []
      //             },
      //             {
      //               "id": 60,
      //               "pid": 51,
      //               "plat": "admin",
      //               "title": "删除",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "channel:product:delete",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1744968920,
      //               "update_time": 1744968920,
      //               "child": []
      //             }
      //           ]
      //         },
      //         {
      //           "id": 50,
      //           "pid": 49,
      //           "plat": "admin",
      //           "title": "通道管理",
      //           "name": "channel-list",
      //           "icon": "icon_td",
      //           "path": "list",
      //           "redirect": null,
      //           "component": "/channel/channel/index.vue",
      //           "permissions": null,
      //           "type": 1,
      //           "hidden": 0,
      //           "cache": 1,
      //           "sort": 1,
      //           "status": 1,
      //           "create_time": 1744968660,
      //           "update_time": 1744968660,
      //           "child": [
      //             {
      //               "id": 52,
      //               "pid": 50,
      //               "plat": "admin",
      //               "title": "新增通道",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "channel:info:create",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1744968792,
      //               "update_time": 1744968792,
      //               "child": []
      //             },
      //             {
      //               "id": 53,
      //               "pid": 50,
      //               "plat": "admin",
      //               "title": "查看",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "channel:info:view",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1744968808,
      //               "update_time": 1744968808,
      //               "child": []
      //             },
      //             {
      //               "id": 54,
      //               "pid": 50,
      //               "plat": "admin",
      //               "title": "编辑",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "channel:info:update",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1744968822,
      //               "update_time": 1744968822,
      //               "child": []
      //             },
      //             {
      //               "id": 55,
      //               "pid": 50,
      //               "plat": "admin",
      //               "title": "删除",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "channel:info:delete",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1744968834,
      //               "update_time": 1744968834,
      //               "child": []
      //             },
      //             {
      //               "id": 56,
      //               "pid": 50,
      //               "plat": "admin",
      //               "title": "新增产品",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "channel:info:add",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1744968849,
      //               "update_time": 1744968849,
      //               "child": []
      //             }
      //           ]
      //         }
      //       ]
      //     },
      //     {
      //       "id": 9,
      //       "pid": 0,
      //       "plat": "admin",
      //       "title": "系统菜单",
      //       "name": "",
      //       "icon": "setting",
      //       "path": "/sys",
      //       "redirect": null,
      //       "component": "Layout",
      //       "permissions": null,
      //       "type": 0,
      //       "hidden": 0,
      //       "cache": 0,
      //       "sort": 2,
      //       "status": 1,
      //       "create_time": 1735197503,
      //       "update_time": 1735197503,
      //       "child": [
      //         {
      //           "id": 39,
      //           "pid": 9,
      //           "plat": "admin",
      //           "title": "操作日志",
      //           "name": "sys-operation-log",
      //           "icon": "icon_czrz",
      //           "path": "operation_log",
      //           "redirect": null,
      //           "component": "/sys/log/OperationLog.vue",
      //           "permissions": "sys:operation_log:list",
      //           "type": 1,
      //           "hidden": 0,
      //           "cache": 1,
      //           "sort": 10,
      //           "status": 1,
      //           "create_time": 1735203787,
      //           "update_time": 1735203787,
      //           "child": [
      //             {
      //               "id": 41,
      //               "pid": 39,
      //               "plat": "admin",
      //               "title": "清理",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "sys:operation_log:delete",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1735203952,
      //               "update_time": 1735203952,
      //               "child": []
      //             }
      //           ]
      //         },
      //         {
      //           "id": 13,
      //           "pid": 9,
      //           "plat": "admin",
      //           "title": "菜单管理",
      //           "name": "sys-menu",
      //           "icon": "icon_dd",
      //           "path": "menu",
      //           "redirect": null,
      //           "component": "/sys/menu/index.vue",
      //           "permissions": "sys:menu:list",
      //           "type": 1,
      //           "hidden": 0,
      //           "cache": 1,
      //           "sort": 3,
      //           "status": 1,
      //           "create_time": 1735201242,
      //           "update_time": 1735201242,
      //           "child": [
      //             {
      //               "id": 14,
      //               "pid": 13,
      //               "plat": "admin",
      //               "title": "新增",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "sys:menu:info,sys:menu:select,sys:menu:create",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1735201270,
      //               "update_time": 1735201270,
      //               "child": []
      //             },
      //             {
      //               "id": 15,
      //               "pid": 13,
      //               "plat": "admin",
      //               "title": "编辑",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "sys:menu:info,sys:menu:select,sys:menu:update",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1735201290,
      //               "update_time": 1735201290,
      //               "child": []
      //             },
      //             {
      //               "id": 16,
      //               "pid": 13,
      //               "plat": "admin",
      //               "title": "删除",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "sys:menu:delete",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1735201307,
      //               "update_time": 1735201307,
      //               "child": []
      //             }
      //           ]
      //         },
      //         {
      //           "id": 17,
      //           "pid": 9,
      //           "plat": "admin",
      //           "title": "角色管理",
      //           "name": "sys-role",
      //           "icon": "icon_jsgl",
      //           "path": "role",
      //           "redirect": null,
      //           "component": "/sys/role/index.vue",
      //           "permissions": "sys:role:list",
      //           "type": 1,
      //           "hidden": 0,
      //           "cache": 1,
      //           "sort": 2,
      //           "status": 1,
      //           "create_time": 1735201568,
      //           "update_time": 1735201568,
      //           "child": [
      //             {
      //               "id": 20,
      //               "pid": 17,
      //               "plat": "admin",
      //               "title": "编辑",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "sys:role:info,sys:role:update",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1735201648,
      //               "update_time": 1735201648,
      //               "child": []
      //             },
      //             {
      //               "id": 18,
      //               "pid": 17,
      //               "plat": "admin",
      //               "title": "查看",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "sys:role:info",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1735201596,
      //               "update_time": 1735201596,
      //               "child": []
      //             },
      //             {
      //               "id": 19,
      //               "pid": 17,
      //               "plat": "admin",
      //               "title": "新增",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "sys:role:create",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1735201632,
      //               "update_time": 1735201632,
      //               "child": []
      //             },
      //             {
      //               "id": 21,
      //               "pid": 17,
      //               "plat": "admin",
      //               "title": "删除",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "sys:role:delete",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1735201669,
      //               "update_time": 1735201669,
      //               "child": []
      //             }
      //           ]
      //         },
      //         {
      //           "id": 11,
      //           "pid": 9,
      //           "plat": "admin",
      //           "title": "账号管理",
      //           "name": "sys-user",
      //           "icon": "icon_zhgl_sel",
      //           "path": "user",
      //           "redirect": null,
      //           "component": "/sys/user/index.vue",
      //           "permissions": "sys:user:list",
      //           "type": 1,
      //           "hidden": 0,
      //           "cache": 1,
      //           "sort": 1,
      //           "status": 1,
      //           "create_time": 1735198722,
      //           "update_time": 1735198722,
      //           "child": [
      //             {
      //               "id": 42,
      //               "pid": 11,
      //               "plat": "admin",
      //               "title": "新增",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "sys:user:info,sys:user:create",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1735205029,
      //               "update_time": 1735205029,
      //               "child": []
      //             },
      //             {
      //               "id": 43,
      //               "pid": 11,
      //               "plat": "admin",
      //               "title": "编辑",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "sys:user:info,sys:user:update",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1735205062,
      //               "update_time": 1735205062,
      //               "child": []
      //             },
      //             {
      //               "id": 44,
      //               "pid": 11,
      //               "plat": "admin",
      //               "title": "删除",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "sys:user:delete",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1735205081,
      //               "update_time": 1735205081,
      //               "child": []
      //             },
      //             {
      //               "id": 12,
      //               "pid": 11,
      //               "plat": "admin",
      //               "title": "查看",
      //               "name": "",
      //               "icon": "",
      //               "path": "",
      //               "redirect": null,
      //               "component": null,
      //               "permissions": "sys:user:info",
      //               "type": 2,
      //               "hidden": 0,
      //               "cache": 0,
      //               "sort": 99,
      //               "status": 1,
      //               "create_time": 1735198757,
      //               "update_time": 1735198757,
      //               "child": []
      //             }
      //           ]
      //         }
      //       ]
      //     },
      //     {
      //       "id": 1,
      //       "pid": 0,
      //       "plat": "admin",
      //       "title": "首页",
      //       "name": "dashboard",
      //       "icon": "icon_sy",
      //       "path": "/dashboard",
      //       "redirect": "",
      //       "component": "Layout",
      //       "permissions": "",
      //       "type": 0,
      //       "hidden": 0,
      //       "cache": 0,
      //       "sort": 1,
      //       "status": 1,
      //       "create_time": 0,
      //       "update_time": 0,
      //       "child": [
      //         {
      //           "id": 3,
      //           "pid": 1,
      //           "plat": "admin",
      //           "title": "用户统计",
      //           "name": "statistic:data:user",
      //           "icon": "ep:user",
      //           "path": "/statistic/user",
      //           "redirect": null,
      //           "component": "/statistic/user/index.vue",
      //           "permissions": "statistic:data:user",
      //           "type": 1,
      //           "hidden": 0,
      //           "cache": 1,
      //           "sort": 2,
      //           "status": 1,
      //           "create_time": 1735195416,
      //           "update_time": 1735195416,
      //           "child": []
      //         },
      //         {
      //           "id": 2,
      //           "pid": 1,
      //           "plat": "admin",
      //           "title": "控制台",
      //           "name": "Console",
      //           "icon": "icon_sj",
      //           "path": "console",
      //           "redirect": "",
      //           "component": "/dashboard/console/index.vue",
      //           "permissions": "",
      //           "type": 1,
      //           "hidden": 0,
      //           "cache": 0,
      //           "sort": 1,
      //           "status": 1,
      //           "create_time": 0,
      //           "update_time": 0,
      //           "child": []
      //         }
      //       ]
      //     }
      //   ]
      // }
      // const {data} = await getUserNav();
      // 菜单转换为树形结构
      // const routes = arrayToTree(data.menus);
      // 设置权限
      const {body} = await getUserNav({action:'nav'});
      const data=transformTreeToMenu(body.tree)
      //
      // const data=transformTreeToMenu(datas.tree)
      console.log(data,'--------------999----------------')
      const userStore = useUserStore();
      userStore.setPermissions(body.permissions);
      // userStore.setPermissions(datas.permissions);
      // 构建路由信息
      routers = this.generatorAsyncRouter(data);
      // 生成菜单栏
      this.menuList = this.generatorMenu(data);
      // 其他路由 = 个人设置 + 404
      let otherRoutes = [accountRoutes, PAGE_NOT_FOUND_ROUTE];
      // 生成路由表
      this.routers = [...routers, ...otherRoutes as RouteRecordRaw []];

      if (isDevelopment) {
        console.log('%c<-------------------- 动态(菜单)路由 s -------------------->', 'color:blue')
        console.log(routers)
        console.log('%c<-------------------- 动态(菜单)路由 e -------------------->', 'color:blue')
      }
      return this.routers;
    },
  },
});
const transformTreeToMenu=(tree:any,depth = 1)=> {
  return tree.map(node => {
    return {
      id: node.id,
      parent_id: node.pid,
      path: node.path,
      name: node.name,
      redirect: node.redirect,
      component: node.component,
      hidden: node.hidden === 1,
      meta: {
        title: node.title,
        icon: node.icon,
        noCache: node.cache === 0,
        orderNum: node.sort
      },
      children: depth < 2 && node.child? transformTreeToMenu(node.child, depth + 1) : []
    };
  });
}
      export default useRouterStore;
